Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Do not merge] PPC64LE / AARCH64 support #23

Closed
wants to merge 33 commits into from

Conversation

jaimergp
Copy link
Member

@jaimergp jaimergp commented Mar 29, 2020

Checklist

  • Used a fork of the feedstock to propose changes
  • Bumped the build number (if the version is unchanged)
  • Reset the build number to 0 (if the version changed)
  • Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
  • Ensured the license file is being packaged.

Current status

ARM

Reference and CPU working. OpenCL via pocl looks like it's working too.

PowerPC

Previous bug with different GCC versions was solved. CUDA support is now possible too (only v10.2). Waiting on conda-forge/conda-forge-pinning-feedstock#725 so smithy can re-render the repo with support.

@conda-forge-linter
Copy link

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@jaimergp
Copy link
Member Author

@conda-forge-admin, please rerender

@conda-forge-linter
Copy link

Hi! This is the friendly automated conda-forge-linting service.

I was trying to look for recipes to lint for you, but it appears we have a merge conflict.
Please try to merge or rebase with the base branch to resolve this conflict.

Please ping the 'conda-forge/core' team (using the @ notation in a comment) if you believe this is a bug.

@jaimergp
Copy link
Member Author

jaimergp commented Jun 2, 2020

Wow, does this work already @jaimergp ?

No clue, I recall there were some precision issues in last attempt. Let's see if the new OpenMM has fixes for this.

@jaimergp
Copy link
Member Author

jaimergp commented Jun 2, 2020

So both ARM and PPC compile, but there are some runtime linking problems with OpenCL. This might be due to a missing dependency and I will debug that locally.

I see that the OpenMM CI does not have that problem (nor the "large difference in forces" PPC has here), so I guess there's a compiler/library situation we need to resolve anyway, OpenCL involved or not.

@isuruf
Copy link
Member

isuruf commented Jun 2, 2020

but there are some runtime linking problems with OpenCL.

This is a bug with the POCL conda package. I'll fix it this weekend.

@jaimergp jaimergp mentioned this pull request Jun 2, 2020
8 tasks
@jaimergp jaimergp changed the title Test new ARM support PPC64LE / AARCH64 support Jun 2, 2020
@isuruf
Copy link
Member

isuruf commented Jun 2, 2020

Fixed in conda-forge/pocl-feedstock@cb201c2

@jaimergp
Copy link
Member Author

jaimergp commented Jun 2, 2020

Confirmed, GCC 8.5 as provided by apt reproduces the large differences in PowerPC too. Check logs for attempt here.

@peastman Do you think this difference in behavior qualifies as a bug that must be addressed at openmm/openmm?

@peastman
Copy link
Contributor

peastman commented Jun 2, 2020

We definitely need to track down what's causing it.

@isuruf
Copy link
Member

isuruf commented Jun 3, 2020

Can openmm use clang? We have clang compilers for linux too.

@jchodera
Copy link
Contributor

jchodera commented Jun 3, 2020

Can openmm use clang? We have clang compilers for linux too.

Yes! I think @peastman even prefers clang.

@jchodera
Copy link
Contributor

jchodera commented Jun 3, 2020

We use clang in the omnia recipe, for example.

@isuruf
Copy link
Member

isuruf commented Jun 3, 2020

I restarted the builds. Looks like CPU works fine on aarch64 and POCL works fine on ppc64le and aarch64.

@jaimergp
Copy link
Member Author

jaimergp commented Jul 3, 2020

Currently blocking issue is discussed here: openmm/openmm#2722

@isuruf
Copy link
Member

isuruf commented Jul 6, 2020

Switching to clang fails with,

In file included from /home/conda/feedstock_root/build_artifacts/openmm_1594059750456/work/openmmapi/include/openmm/internal/vectorize.h:38:

/home/conda/feedstock_root/build_artifacts/openmm_1594059750456/work/openmmapi/include/openmm/internal/vectorize_ppc.h:286:20: error: use of overloaded operator '+' is ambiguous (with operand types 'fvec4' and '__vector float' (vector of 4 'float' values))

    fvec4 temp = r + vec_sld(r.val, r.val, 8);

                 ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~

@jaimergp
Copy link
Member Author

jaimergp commented Jul 7, 2020

Yeah, we had tried that in #26 and arrived to the same conclusion :/

@jaimergp
Copy link
Member Author

Thanks to latest changes in master, there's no precision issues with CPU anymore! Thank you so much @peastman and @isuruf!

@jaimergp jaimergp changed the title PPC64LE / AARCH64 support [Do not merge] PPC64LE / AARCH64 support Jul 24, 2020
@jchodera
Copy link
Contributor

Huzzah! Thanks so much, everybody!

@jaimergp
Copy link
Member Author

Will be superseded by #36

@jaimergp jaimergp closed this Oct 28, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants